/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Negocios;

import javax.swing.JOptionPane;

/**
 *
 * @author Estudiante
 */
public class Entero {
    private int Num;

    public int getNum() {
        return Num;
    }

    public void setNum(int Num) {
        this.Num = Num;
    }
    public boolean Par(){
        return Num % 2==0;
    }
    public long Factorial(){
        try{
            long a=1;
            for (int i=1;i<=Num;i++)
                a=a*i;
            return a;    
        }catch(Exception e){
            return 0;
        }      
    }
    public boolean Primo(){
        if (Num==1){
            return false;
        }else{
            for (int i=2;i<=Num;i++){
                if ((Num % i)==0){
                    if (Num==i) 
                        return true;
                    else
                        return false;
                }                                                        
            }          
        }
        return false;
    }
    
        
    public int Invertir(){
        int aux=Num;
        int a=0;
        while(Num>0){
            int residuo=Num%10;
            a =a*10+residuo;
            Num=Num/10;
        }
        Num=aux;
        return a;
    }
      public boolean Capícua(){
        return Num==this.Invertir();
    }
        
    public int EliminarDigitoPrimo(){
        int a=0;
        boolean w=false;
        while(Num>0){
            int res=Num%10;
            Entero obj = new Entero();
            obj.setNum(res);
            if (!obj.Primo()){
                a=a*10+res;
            }else w=true;
            Num=Num/10;  
        }
        if (w){
        Entero ob = new Entero();
        ob.setNum(a);
          
        return a;
        }
        else       
        return a;
    }
    
    public int Fibonacci(){
        int a=1,b=1,i=1,f=0,n;
        //int b=1;
        //int i=1;
        //int f;
        while (i<=Num){
            if (i==1)
                f=1;
            else{
                f=a+b;
                b=a;
                a=f;               
            }
            JOptionPane.showMessageDialog(null, "Serie: "+ f);
            i++;
            
        }
        return f;
    }
    
    public int EliminarPrimos(){
        int a=0;
        Entero d=new Entero();
        int n=Invertir();
        while(n>0){
            int res=n%10;
            d.setNum(res);
            if (!d.Primo()){
                a=a*10+res;
            }
            n=n/10;               
        }
        return a;
    }
    
    public int longitud(){
        int aux=Num;
        int c=0;
        while(Num>0){
            Num=Num/10;
            c++;
        }
        Num=aux;
        return c;
    }
    
    public int ContarPrimos(){
        int aux=Num;
        int c=0;
        Entero d=new Entero();
        while(Num>0){
            int res=Num%10;
            d.setNum(res);
            if (d.Primo()){
                c++;
            }
            Num=Num/10;
        }
        Num=aux;
        return c;
    }
    
    public String ContarParImpar(){
        int aux=Num;
        int c=0,s=0;
        Entero d=new Entero();
        while(Num>0){
            int res=Num%10;
            d.setNum(res);
            if (d.Par()){
                c++;
            }else
                s++;
            Num=Num/10;
        }
        Num=aux;
        return "Par= "+  c + " Impar= " + s;
    }
    
    public String MostrarDigPrimos(){
        int a=0;
        int n=Invertir();
        Entero d=new Entero();
        while(n>0){
            int res=n%10;
            d.setNum(res);
            if (d.Primo()){
                a=a*10+res;
            }
            n=n/10;
        }
        
        return "Los Primos = "+a;
    }
    
    public float PromedioPares(){
        int a=0,c=0;
        int n=Invertir();
        Entero d=new Entero();
        while(n>0){
            int res=n%10;
            d.setNum(res);
            if (d.Par()){
                a=a+res;
                c++;
            }
            n=n/10;
        }        
        return a/c;
    }
    
    public int NroVeces(int e){
        int aux=Num,c=0;
        while(Num>0){
            int res=Num%10;
            if(res==e){
                c++;
            }
            Num=Num/10;
        }        
        return c;        
    }
    
//    public int EliminarRepetidos(){
//        int aux=Num;
//        int a = Invertir();
//        Entero b=new Entero();
//        while (a>0){
//            int r=a%10;
//            b.setNum(r);
//            if (NroVeces(r)){
//                    
//            }
//                
//        }
//        
//    }
    
    public int EliminarDigitoRep(int d){
        //Entero nn=new Entero();
        boolean w=true;
        
        int n =Invertir(),a=0;
        while(n>0){
            int r=n%10;
            if(r==d){
                if (w){
                    w=false;
                    a=a*10+d;    
                }
            }else
                a=a*10+r;
            n=n/10;            
        }
       
        return a;
    }
        
    
}
